#ifndef WSTCPIP_H
#define WSTCPIP_H

struct iphdr {
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
    quint8	ihl:4,
        version:4;
#else
    quint8	version:4,
        ihl:4;
#endif
    quint8	tos;
    quint16	tot_len;
    quint16	id;
    quint16	frag_off;
    quint8	ttl;
    quint8	protocol;
    quint16	check;
    quint32	saddr;
    quint32	daddr;
    /*The options start here. */
};

#define ICMP_ECHOREPLY		0	/* Echo Reply			*/
#define ICMP_DEST_UNREACH	3	/* Destination Unreachable	*/
#define ICMP_SOURCE_QUENCH	4	/* Source Quench		*/
#define ICMP_REDIRECT		5	/* Redirect (change route)	*/
#define ICMP_ECHO           8	/* Echo Request			*/
#define ICMP_TIME_EXCEEDED	11	/* Time Exceeded		*/
#define ICMP_PARAMETERPROB	12	/* Parameter Problem		*/
#define ICMP_TIMESTAMP		13	/* Timestamp Request		*/
#define ICMP_TIMESTAMPREPLY	14	/* Timestamp Reply		*/
#define ICMP_INFO_REQUEST	15	/* Information Request		*/
#define ICMP_INFO_REPLY		16	/* Information Reply		*/
#define ICMP_ADDRESS		17	/* Address Mask Request		*/
#define ICMP_ADDRESSREPLY	18	/* Address Mask Reply		*/
#define NR_ICMP_TYPES		18

struct icmphdr {
  quint8		type;
  quint8		code;
  quint16	checksum;
  union {
    struct {
        quint16	id;
        quint16	sequence;
    } echo;
    quint32	gateway;
    struct {
        quint16	__unused;
        quint16	mtu;
    } frag;
    quint8	reserved[4];
  } un;
};

#endif // WSTCPIP_H
